﻿using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections.Generic;
using Model;

namespace Control
{
    public class MGUsuarios : ModuloDeGerenciamento<Usuario>, IEditavel<Usuario> {
        public MGUsuarios()
        {
            this.dc = new Model.DataClassesDataContext();
        }

        public override List<Usuario> listar()
        {
            var usuario = from row in this.dc.Usuarios select row;
            List<Usuario> list = new List<Usuario>();
            foreach (Usuario u in usuario)
            {
                list.Add(u);
            }
            return list;
        }

        public override bool adicionar(Usuario obj)
        {
            bool flag = true;
            try
            {
                this.dc.Usuarios.InsertOnSubmit(obj);
                this.dc.SubmitChanges();
            }
            catch (Exception e)
            {

                this.output += "Erro ao inserir o registro";
                this.output += e.ToString();
                flag = false;
            }
            return flag;
        }

        public bool adicionar(string nome, string login, string senha, string email, string telFixo, string telCelular, string telContato, string logradouro, string endNumero, string complemento, string bairro, string cidade, string uf, string cep, int grupo)
        {
            if (string.IsNullOrEmpty(nome) || string.IsNullOrEmpty(login) || string.IsNullOrEmpty(senha)
                 || string.IsNullOrEmpty(email) || string.IsNullOrEmpty(telFixo) || string.IsNullOrEmpty(telCelular) || string.IsNullOrEmpty(telContato)
                 || string.IsNullOrEmpty(logradouro) || string.IsNullOrEmpty(endNumero) || string.IsNullOrEmpty(bairro) || string.IsNullOrEmpty(cidade)
                 || string.IsNullOrEmpty(uf) || string.IsNullOrEmpty(cep) || grupo <=0)
            {
                return false;
            }

            Usuario u = new Usuario();
            u.nome = nome;
            u.login = login;
            u.senha = senha;
            u.email = email;
            u.telFixo = telFixo;
            u.telCelular = telCelular;
            u.telContato = telContato;
            u.logradouro = logradouro;
            u.endNumero = endNumero;
            u.complemento = complemento;
            u.bairro = bairro;
            u.cidade = cidade;
            u.uf = uf;
            u.cep = cep;
            u.grupo = grupo;
            return this.adicionar(u);
        }

        public override bool remover(Usuario obj)
        {
            var flag = false;
            try
            {
                this.dc.Usuarios.DeleteOnSubmit(obj);
                this.dc.SubmitChanges();
            }
            catch (Exception e)
            {
                this.output += "Erro ao remover o registro";
                this.output += e.ToString();
                flag = true;
            }
            return flag;
        }

        public override Usuario get(uint id)
        {
            if (id == 0) return null;
            Usuario usuario = null;
            try
            {
                usuario = this.dc.Usuarios.Single(u => u.id == id);
            }
            catch (Exception e)
            {

                this.output += "Erro ao remover o registro";
                this.output += e.ToString();
                usuario = null;
            }
            return usuario;
        }
        public override bool remover(uint id)
        {
            return this.remover(this.get(id));
        }

		public bool atualizar(Usuario obj) {
			throw new NotImplementedException();
		}

        public bool atualizar(uint id, string nome, string login, string senha, string email, string telFixo, string telCelular, string telContato, string logradouro, string endNumero, string complemento, string bairro, string cidade, string uf, string cep, int grupo) {
			throw new NotImplementedException();
        }

		public bool atualizar(uint id) {
			throw new NotImplementedException();
		}

	}
}
